// 在文件顶部添加 Skill 接口定义
interface Skill {
  name: string;
  // 可以添加其他属性
}

// subpackage_volleyball/knowledge/knowledge.ts
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 轮播图图片
    bannerImages: [
      '/miniprogram/static/images/blue_bg.jpg',
      '/miniprogram/static/images/blue_bg.jpg',
      '/miniprogram/static/images/blue_bg.jpg'
    ],

    // 时间轴事件
    timelineEvents: [
      {
        year: '1895年',
        title: '排球运动起源',
        description: '由美国马萨诸塞州霍利奥克市基督教青年会干事威廉·G·摩根发明，最初称为"mintonette"。'
      },
      {
        year: '1900年',
        title: '正式更名为"排球"',
        description: '由美国春田学院的阿尔弗雷德·哈舍博士将"mintonette"更名为"volleyball"，意为"空中击球"。'
      },
      {
        year: '1916年',
        title: '制定统一规则',
        description: '美国排球协会成立，并制定了第一部统一的排球规则，规定了比赛场地、人数和得分方式等。'
      },
      {
        year: '1922年',
        title: '首次全国锦标赛',
        description: '美国举办了第一届全国排球锦标赛，标志着排球运动开始走向规范化和竞技化。'
      },
      {
        year: '1947年',
        title: '国际排球联合会成立',
        description: '国际排球联合会（FIVB）在法国巴黎成立，旨在促进排球运动在全球的发展。'
      },
      {
        year: '1952年',
        title: '首届世界排球锦标赛',
        description: '第一届世界排球锦标赛在苏联莫斯科举行，共有10个国家的男子排球队参赛。'
      },
      {
        year: '1964年',
        title: '成为奥运会正式项目',
        description: '排球运动首次成为奥运会正式比赛项目，出现在日本东京奥运会上。'
      },
      {
        year: '1996年',
        title: '沙滩排球加入奥运会',
        description: '沙滩排球在亚特兰大奥运会上首次成为正式比赛项目，受到广泛欢迎。'
      },
      {
        year: '2001年',
        title: '每球得分制改革',
        description: '国际排联实施每球得分制，取代了传统的发球得分制，使比赛更加精彩紧凑。'
      },
      {
        year: '2005年',
        title: '自由人规则调整',
        description: '国际排联对自由人规则进行重大调整，允许自由人在进攻端发挥更大作用。'
      }
    ],

    // 基础规则
    basicRules: [
      {
        title: '比赛场地',
        description: '排球比赛场地为长方形，长18米，宽9米。场地中间有一条中线将球场分为两个相等的场区，中线处有一条高2.43米（男子）或2.24米（女子）的球网。'
      },
      {
        title: '参赛人数',
        description: '每队由12名队员组成，其中1名队长。比赛时每队场上队员为6人，包括1名二传手、1名接应二传、2名主攻手、2名副攻手（或1名副攻手和1名自由人）。'
      },
      {
        title: '比赛用球',
        description: '比赛用球为圆形，由柔软皮革或合成革制成，内装橡皮或类似材质的球胆。球的颜色可以是单一的浅色，或由FIVB批准的多色球。球的周长为65-67厘米，重量为260-280克。'
      },
      {
        title: '得分规则',
        description: '采用每球得分制，即无论哪一方发球，只要该方获胜就得1分。先得25分并领先对方2分的队胜一局。如果比分为24平，则继续比赛至某队领先2分为止。'
      },
      {
        title: '比赛局数',
        description: '正式比赛采用五局三胜制。前四局每局25分，决胜局（第五局）15分，先得15分并领先对方2分的队获胜。'
      },
      {
        title: '轮转规则',
        description: '每队得分后，队员按顺时针方向轮转一个位置。发球队员必须站在本方发球区内发球，击球后可进入场内。'
      }
    ],

    // 核心技术 - 明确类型为 Skill[]
    coreSkills: [] as Skill[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    // 初始化数据
    this.setData({
      timelineEvents: this.data.timelineEvents,
      basicRules: this.data.basicRules
    });
  },

  /**
   * 切换规则标签
   */
  switchRuleTab(e: any) {
    const tab = e.currentTarget.dataset.tab;
    // 隐藏所有标签内容
    const tabContents = wx.createSelectorQuery().selectAll('.tab-content');
    tabContents.fields({ node: true, properties: ['classList'] }, (nodes: any) => {
      if (nodes && nodes.length > 0) {
        nodes.forEach((content: any) => {
          content.classList.remove('active');
        });
      }

      // 移除所有标签的激活状态
      const tabItems = wx.createSelectorQuery().selectAll('.tab-item');
      tabItems.fields({ node: true, properties: ['classList'] }, (tabNodes: any) => {
        if (tabNodes && tabNodes.length > 0) {
          tabNodes.forEach((item: any) => {
            item.classList.remove('active');
          });
        }

        // 激活当前标签
        const currentTab = e.currentTarget;
        if (currentTab && currentTab.node) {
          currentTab.node.classList.add('active');
        }

        // 显示当前标签内容
        const currentContent = wx.createSelectorQuery().select(`#${tab}-rules`);
        currentContent.fields({ node: true, properties: ['classList'] }, (contentNode: any) => {
          if (contentNode) {
            contentNode.classList.add('active');
          }
        }).exec();
      }).exec();
    }).exec();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '排球知识',
      path: '/subpackage_volleyball/knowledge/knowledge'
    };
  }
});